package n2488;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	static int p,q;
	
	static int[][]path=new int[26][26];
	
	static String[]ans=new String[26];
	
	static boolean globalFlag=false;
	
	static int[] dirx={-1,1,-2,2,-2,2,-1,1};
	static int[] diry={-2,-2,-1,-1,1,1,2,2};
	static void search(int x,int y,int count)
	{
		boolean curFlag=true;
		/*for(int i=0;i<p;i++)
			for(int j=0;j<q;j++)
			{
				if(path[i][j]==0)
				{
					curFlag=false;
					break;
				}
			}
		*/
		if(count==p*q+1){
			curFlag=true;
		}else{
			curFlag=false;
		}
		
		if(curFlag==true){
			if(globalFlag==false)
			{
				for(int j=0;j<p*q;j++)
				{
					System.out.print(ans[j]);
				}
			}
			globalFlag=true;
		}else{
			if(globalFlag||x<0||x>=p||y<0||y>=q){
				return;
			}
			for(int i=0;i<8;i++)
			{
				int tx=x,ty=y;
				if(path[x][y]==0)
				{
					path[x][y]=count;
					tx=x+dirx[i];
					ty=y+diry[i];
					ans[count-1]=String.valueOf((char)(y+'A'))+(x+1);
					search(tx,ty,count+1);
					path[x][y]=0;
					ans[count-1]="";
				}
			}
		}
		
	}
	
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub


		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		String line=bf.readLine();
		int total=Integer.parseInt(line);
		for(int i=0;i<total;i++)
		{
			line=bf.readLine();
			StringTokenizer st=new StringTokenizer(line);
			p=Integer.parseInt(st.nextToken());
			q=Integer.parseInt(st.nextToken());
			globalFlag=false;
			System.out.println("Scenario #"+(i+1)+":");
			search(0, 0, 1);
			if(!globalFlag)
			{
				System.out.print("impossible");
			}
			System.out.println();
			System.out.println();
		}
		
		
	}

}
